home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / include / dev / RCS / net.h,v < prev    next >
Text File  |  1988-06-21  |  7KB  |  225 lines

  1. head     1.1;
  2. access   ;
  3. symbols  ;
  4. locks    ; strict;
  5. comment  @ * @;
  6.  
  7.  
  8. 1.1
  9. date     88.06.21.12.07.44;  author ouster;  state Exp;
  10. branches ;
  11. next     ;
  12.  
  13.  
  14. desc
  15. @@
  16.  
  17.  
  18.  
  19. 1.1
  20. log
  21. @Initial revision
  22. @
  23. text
  24. @/*
  25.  * net.h --
  26.  *
  27.  *    This file defines the device-dependent I/O control commands and
  28.  *    related structures for 4.3 BSD Unix socket emulation.
  29.  *
  30.  * Copyright 1987 Regents of the University of California
  31.  * All rights reserved.
  32.  * Permission to use, copy, modify, and distribute this
  33.  * software and its documentation for any purpose and without
  34.  * fee is hereby granted, provided that the above copyright
  35.  * notice appear in all copies.  The University of California
  36.  * makes no representations about the suitability of this
  37.  * software for any purpose.  It is provided "as is" without
  38.  * express or implied warranty.
  39.  *
  40.  * $Header: net.h,v 2.3 88/04/24 17:59:22 andrew Exp $ SPRITE (Berkeley)
  41.  */
  42.  
  43. #ifndef _NET_IOC
  44. #define _NET_IOC
  45.  
  46. #include "sprite.h"
  47. #include "netInet.h"
  48.  
  49. #define IOC_NET (4<<16)
  50.  
  51. /*
  52.  * The I/O control commands:
  53.  *  IOC_NET_LISTEN        - make into a passive socket.
  54.  *  IOC_NET_ACCEPT_CONN_1    - accept a pending connection request.
  55.  *  IOC_NET_ACCEPT_CONN_2    - change a new socket in the connect request.
  56.  *  IOC_NET_GET_LOCAL_ADDR    - get the local <address, port> of the socket.
  57.  *  IOC_NET_SET_LOCAL_ADDR    - set the local <address, port> of the socket.
  58.  *  IOC_NET_CONNECT        - try to connect to a remote host.
  59.  *  IOC_NET_GET_REMOTE_ADDR    - get the remote <address,port> of the socket.
  60.  *  IOC_NET_GET_OPTION        - get the current value of an option.
  61.  *  IOC_NET_SET_OPTION        - set the value of an option.
  62.  *  IOC_NET_RECV_FLAGS        - flags to modify behavior of next read.
  63.  *  IOC_NET_RECV_FROM        - <address,port> of last read packet.
  64.  *  IOC_NET_SEND_INFO        - flags to modify behavior of next write.
  65.  *  IOC_NET_SHUTDOWN        - shutdown the socket.
  66.  *  IOC_NET_SET_PROTOCOL    - change the protocol for a socket.
  67.  *  IOC_NET_IS_OOB_DATA_NEXT    - returns TRUE if out-of-band data will be
  68.  *                  read by the next read call.
  69.  *  IOC_NET_STATS        - turn on/off statistics collection.
  70.  *
  71.  */
  72.  
  73. #define IOC_NET_LISTEN            (IOC_NET | 1)
  74. #define IOC_NET_ACCEPT_CONN_1        (IOC_NET | 2)
  75. #define IOC_NET_ACCEPT_CONN_2        (IOC_NET | 3)
  76. #define IOC_NET_GET_LOCAL_ADDR        (IOC_NET | 4)
  77. #define IOC_NET_SET_LOCAL_ADDR        (IOC_NET | 5)
  78. #define IOC_NET_CONNECT            (IOC_NET | 6)
  79. #define IOC_NET_GET_REMOTE_ADDR        (IOC_NET | 7)
  80. #define IOC_NET_GET_OPTION        (IOC_NET | 8)
  81. #define IOC_NET_SET_OPTION        (IOC_NET | 9)
  82. #define IOC_NET_RECV_FLAGS        (IOC_NET | 10)
  83. #define IOC_NET_RECV_FROM        (IOC_NET | 11)
  84. #define IOC_NET_SEND_INFO        (IOC_NET | 12)
  85. #define IOC_NET_SHUTDOWN        (IOC_NET | 13)
  86. #define IOC_NET_SET_PROTOCOL        (IOC_NET | 14)
  87. #define IOC_NET_IS_OOB_DATA_NEXT    (IOC_NET | 15)
  88. #define IOC_NET_STATS            (IOC_NET | 16)
  89.  
  90. /*
  91.  * Types of sockets:  (same as 4.3BSD)
  92.  *
  93.  *    NET_SOCK_STREAM        - reliable byte stream, connection-based.
  94.  *    NET_SOCK_DGRAM        - unreliable datagram.
  95.  *    NET_SOCK_RAW        - access to raw protocol interface.
  96.  *    NET_SOCK_RDM        - reliably-delivered message.
  97.  *    NET_SOCK_SEQPACKET    - sequenced packet stream.
  98.  *
  99.  * (These values are from 4.3BSD's <sys/socket.h> file.)
  100.  */
  101.  
  102. #define NET_SOCK_STREAM        1
  103. #define NET_SOCK_DGRAM        2
  104. #define NET_SOCK_RAW        3
  105. #define NET_SOCK_RDM        4
  106. #define NET_SOCK_SEQPACKET    5
  107.  
  108. /*
  109.  * The maximum number of connections that can be queued for a stream
  110.  * socket. This value is used with IOC_NET_LISTEN.
  111.  */
  112. #define NET_MAX_NUM_CONNECTS    5
  113.  
  114. /*
  115.  * The level number for a socket when using IOC_NET_GET_OPTION and 
  116.  * IOC_NET_SET_OPTION.
  117.  */
  118.  
  119. #define NET_OPT_LEVEL_SOCKET    0xffff
  120.  
  121. /*
  122.  * Option names for IOC_NET_GET_OPTION / SET_OPTION ioctls.
  123.  *
  124.  * Note: These values must match the SO_ values defined in the 4.3BSD
  125.  * <sys/socket.h> file.
  126.  *
  127.  *   NET_OPT_DEBUG         - Turn on debugging info recording.
  128.  *   NET_OPT_REUSE_ADDR        - Allow local address reuse.
  129.  *   NET_OPT_KEEP_ALIVE        - Keep connections alive.
  130.  *   NET_OPT_DONT_ROUTE        - Just use interface addresses.
  131.  *   NET_OPT_BROADCAST        - Permit sending of broadcast msgs.
  132.  *   NET_OPT_USE_LOOPBACK    - Bypass hardware when possible.
  133.  *   NET_OPT_LINGER        - Linger on close if data present.
  134.  *   NET_OPT_OOB_INLINE        - Leave received OOB data in line.
  135.  *   NET_OPT_SEND_BUF_SIZE    - Send buffer size.
  136.  *   NET_OPT_RECV_BUF_SIZE    - Receive buffer size.
  137.  *   NET_OPT_SEND_LOWAT        - Send low-water mark.
  138.  *   NET_OPT_RECV_LOWAT        - Receive low-water mark.
  139.  *   NET_OPT_SEND_TIMEOUT    - Send timeout.
  140.  *   NET_OPT_RECV_TIMEOUT    - Receive timeout.
  141.  *   NET_OPT_ERROR        - Get error status and clear.
  142.  *   NET_OPT_TYPE        - Get the socket type.
  143.  */
  144. #define    NET_OPT_DEBUG        0x0001        
  145. #define    NET_OPT_RESERVED_1    0x0002        
  146. #define    NET_OPT_REUSE_ADDR    0x0004        
  147. #define    NET_OPT_KEEP_ALIVE    0x0008        
  148. #define    NET_OPT_DONT_ROUTE    0x0010        
  149. #define    NET_OPT_BROADCAST    0x0020        
  150. #define    NET_OPT_USE_LOOPBACK    0x0040        
  151. #define    NET_OPT_LINGER        0x0080        
  152. #define    NET_OPT_OOB_INLINE    0x0100        
  153. #define NET_OPT_SEND_BUF_SIZE    0x1001        
  154. #define NET_OPT_RECV_BUF_SIZE    0x1002        
  155. #define NET_OPT_SEND_LOWAT    0x1003        
  156. #define NET_OPT_RECV_LOWAT    0x1004        
  157. #define NET_OPT_SEND_TIMEOUT    0x1005        
  158. #define NET_OPT_RECV_TIMEOUT    0x1006        
  159. #define    NET_OPT_ERROR        0x1007        
  160. #define NET_OPT_TYPE        0x1008
  161.  
  162. /*
  163.  * TCP socket options:
  164.  *
  165.  * NET_OPT_TCP_NO_DELAY        - don't delay sending data by trying to 
  166.  *                  coalesce packets.
  167.  * NET_OPT_TCP_MAX_SEG_SIZE    - maximum segment size.
  168.  *
  169.  * Note: the following values must agree with 4.3BSD's <netinet/tcp.h>
  170.  */
  171. #define NET_OPT_TCP_NO_DELAY        0x1
  172. #define NET_OPT_TCP_MAX_SEG_SIZE    0x2
  173.  
  174. /*
  175.  * Structure used for manipulating the NET_OPT_LINGER option.
  176.  */
  177. typedef struct    {
  178.     Boolean    onOff;        /* option on/off */
  179.     int    linger;        /* linger time */
  180. } Net_LingerInfo;
  181.  
  182.  
  183. /*
  184.  * Values for the flags data in the IOC_NET_RECV_INFO ioctl and
  185.  * the flags field in the Inet_SendInfo struct.
  186.  *
  187.  * NET_OUT_OF_BAND    next read wants out-of-band data or next send
  188.  *             has out-of-band data to send.
  189.  * NET_PEEK        next read wants to not consume the data in the 
  190.  *             read queue.
  191.  *
  192.  * Note: These values must match the MSG_ values defined in the 4.3BSD
  193.  * <sys/socket.h> file.
  194.  *
  195.  */
  196.  
  197. #define NET_OUT_OF_BAND        0x1
  198. #define NET_PEEK        0x2
  199.  
  200. /*
  201.  * Information sent to the inet server in the IOC_NET_SEND_INFO ioctl.
  202.  * It is used to send the flags and optionally, an address to send the
  203.  * data to. 
  204.  */
  205. typedef struct {
  206.     int    flags;            /* Defined above. */
  207.     Boolean    addressValid;    /* If TRUE, the address field is to be used. */
  208.     union {
  209.     Net_InetSocketAddr    inet; /* Where to send the data. */
  210.     /* 
  211.      * Other address family socket addresses go here...
  212.      */
  213.     } address;
  214. } Net_SendInfo;
  215.  
  216. /*
  217.  * Commands for IOC_NET_STATS ioctl. High-order 16 bits are interpreted
  218.  * as the stat dump file version number.
  219.  */
  220. #define NET_STATS_RESET    1
  221. #define NET_STATS_DUMP    2
  222.  
  223. #endif _NET_IOC
  224. @
  225.